Ink parsers are used for processing electronically represented handwritten text and/or drawings. Ink parsers are now performing increasingly sophisticated parsing operations, such as semantic parsing, which may include grouping ink strokes into words and lines, detection of lists, tables, flowcharts, annotations, and the anchoring of annotations. The output of an ink parser may include: hierarchical structures (e.g., words, lines, and/or paragraphs) of writing blocks, writing/drawing classifications, (unknown) drawing objects, flow charts, organization charts, tables, annotations, lists, and the like.
For an ink parser that handles handwritten text and drawings, multiple sub-parsers, also referred to herein as parsing engines, may be used. Each parsing engine may have a relatively large number of parameters, such as thresholds, scales, and weights of linear combination, that affect the accuracy of the parsing engines and the ink parser. Accordingly, setting the parser engines' parameters in such a way as to optimize the ink parser's performance is typically quite challenging.